package com.umariana.ClinicaVeterinaria.InterfazGrafica;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.DefaultListModel;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import javax.swing.JList;
import javax.swing.JTable;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;

import com.umariana.ClinicaVeterinaria.mundo.Consulta;
import com.umariana.ClinicaVeterinaria.mundo.HistorialClinico;
import com.umariana.ClinicaVeterinaria.mundo.Mascotas;

public class DialogoHistorialClinico extends JDialog implements ActionListener , KeyListener {

	/**
	 * serializable
	 */
	private static final long serialVersionUID = 1L;
	/***
	 * panel contenido del dialogo
	 */
	private final JPanel contentPanel = new JPanel();
	/**
	 * comando para consultar
	 */
	private final static String CONSULTAR = "CONSULTAR";
	/**
	 * campo de texto para la identifiacion del propietario
	 */
	private JTextField txtIdentificacion;
	/**
	 * tabla historial 
	 */
	private JTable tbHistorial;
	/**
	 * lista de mascotas
	 */
	private JList<Mascotas> listaMascotas ;
	/**
	 * relacion principal 
	 */
	private InterfazClinica principal;
	

	/**
	 * Create the dialog.
	 */
	public DialogoHistorialClinico(InterfazClinica ventana) {
		
		super(ventana,true);
		principal= ventana;
		setTitle("Consultar Historial Clinico");
		setBounds(100, 100, 800, 480);
		getContentPane().setLayout(new BorderLayout());
		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
		getContentPane().add(contentPanel, BorderLayout.CENTER);
		contentPanel.setLayout(null);
		
		JLabel lblIdentificacion = new JLabel("Identificacion: ");
		lblIdentificacion.setBounds(10, 14, 115, 14);
		contentPanel.add(lblIdentificacion);
		
		txtIdentificacion = new JTextField();
		txtIdentificacion.setBounds(135, 11, 184, 20);
		contentPanel.add(txtIdentificacion);
		txtIdentificacion.setColumns(10);
		
		JButton btnConsultar = new JButton("Consultar");
		btnConsultar.setActionCommand(CONSULTAR);
		btnConsultar.addActionListener(this);
		btnConsultar.setBounds(365, 10, 124, 23);
		contentPanel.add(btnConsultar);
		
		JScrollPane scrollPaneListaMascotas = new JScrollPane();
		scrollPaneListaMascotas.setBounds(10, 53, 165, 378);
		contentPanel.add(scrollPaneListaMascotas);
		
		listaMascotas = new JList<Mascotas>();
		listaMascotas.setBorder(new TitledBorder(new EmptyBorder(0, 0, 0, 0), "Mascotas", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		scrollPaneListaMascotas.setViewportView(listaMascotas);
		
		JScrollPane scrollPaneHistorial = new JScrollPane();
		scrollPaneHistorial.setBounds(185, 53, 589, 378);
		contentPanel.add(scrollPaneHistorial);
		
		tbHistorial = new JTable();
		scrollPaneHistorial.setViewportView(tbHistorial);
	}

	
	
	
	
	
	@SuppressWarnings("static-access")
	@Override
	public void keyPressed(KeyEvent arg0) {
		if(arg0.getComponent().equals(txtIdentificacion))
		{
			if(arg0.getKeyCode()==arg0.VK_ENTER)
			{
				boolean validacion = true;
				if(txtIdentificacion.getText().equalsIgnoreCase(""))
				{
					JOptionPane.showMessageDialog(null, "La Identificacion no puede ser vacia","Error",JOptionPane.ERROR_MESSAGE);
					validacion = false;
				}
				
				else
				{
					if(principal.buscarClientePorIdentificacion(txtIdentificacion.getText())==null)
				{
					JOptionPane.showMessageDialog(null, "El propietario no Existe","Error",JOptionPane.ERROR_MESSAGE);
					validacion = false;
				}
				}
				if(validacion)
				{
				HistorialClinico historial = principal.consultarHistorialPropietario(txtIdentificacion.getText());
				DefaultListModel<Mascotas> modelo = new DefaultListModel<Mascotas>();
				for (int i = 0; i < historial.getMascotas().size(); i++) {
					Mascotas miMascota = historial.getMascotas().get(i);
					modelo.add(i, miMascota);
				}
				listaMascotas.setModel(modelo);
				
				String[] columnNames = {"Mascota","Fecha","Hora","Motivo"};
				DefaultTableModel modeloTabla = new DefaultTableModel(columnNames,historial.getConsultas().size());
				for (int i = 0; i < historial.getConsultas().size(); i++) 
				{
					Consulta miConsulta = historial.getConsultas().get(i);
					
					String[] rowData = {miConsulta.getNombreMascota(),miConsulta.getFecha(),miConsulta.getHora(),miConsulta.getMotivo()};
					modeloTabla.addRow(rowData);
					
					
				}
				tbHistorial.setModel(modeloTabla);
				
				}
				
			}
		}
		
	}

	@Override
	public void keyReleased(KeyEvent arg0) {
		
	}

	@Override
	public void keyTyped(KeyEvent arg0) {
		 char car =arg0.getKeyChar();
		 if(car <'0'||car>'9')arg0.consume();
		
	}

	
	
	@Override
	public void actionPerformed(ActionEvent arg0) {
		
		if(arg0.getActionCommand().equals(CONSULTAR))
		{
			boolean validacion = true;
			if(txtIdentificacion.getText().equalsIgnoreCase(""))
			{
				JOptionPane.showMessageDialog(null, "La Identificacion no puede ser vacia","Error",JOptionPane.ERROR_MESSAGE);
				validacion = false;
			}
			
			else
			{
				if(principal.buscarClientePorIdentificacion(txtIdentificacion.getText())==null)
			{
				JOptionPane.showMessageDialog(null, "El propietario no Existe","Error",JOptionPane.ERROR_MESSAGE);
				validacion = false;
			}
			}
			if(validacion)
			{
			HistorialClinico historial = principal.consultarHistorialPropietario(txtIdentificacion.getText());
			DefaultListModel<Mascotas> modelo = new DefaultListModel<Mascotas>();
			for (int i = 0; i < historial.getMascotas().size(); i++) {
				Mascotas miMascota = historial.getMascotas().get(i);
				modelo.add(i, miMascota);
			}
			listaMascotas.setModel(modelo);
			
			String[] columnNames = {"Mascota","Fecha","Hora","Motivo"};
			DefaultTableModel modeloTabla = new DefaultTableModel(columnNames,historial.getConsultas().size());
			for (int i = 0; i < historial.getConsultas().size(); i++) 
			{
				Consulta miConsulta = historial.getConsultas().get(i);
				
				String[] rowData = {miConsulta.getNombreMascota(),miConsulta.getFecha(),miConsulta.getHora(),miConsulta.getMotivo()};
				modeloTabla.addRow(rowData);
				
				
			}
			tbHistorial.setModel(modeloTabla);
			
			}
		}
		
	}
}
